home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
G-Games
/
(c)gd.d64
/
galactic empir.c
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
18KB
|
534 lines
10 REM " *** ***
11 [143] " *** CHR$ALACTIC VALMPIRE ! ***
12 REM " *** ***
13 [143] " *** BY (null)AUL (null)ELLAM ***
14 REM " *** 105 [212]UTELA [200]EIGHTS [210]OAD ***
15 [143] " *** PEEKRANTFORD, (null)NTARIO ***
16 REM " *** [206]3[212] 1[193]4 ***
17 [143] " *** ***
18 REM " *** [195]REDITS : ***
19 [143] " *** - VALNTERPRISE SPRITES BY ??? ***
20 REM " *** (FROM [212][208][213][199] DISK [196]4) ***
21 [143] " *** - RIGHT$DEA FROM A SIMILAR ATN(null)(null)(null)VAL ***
22 REM " *** GAME BY ***
23 [143] " *** (null)RSINE VALNGINEERING & ***
24 REM " *** [208]OWERSOFT [201]NC. ***
25 [143] " *** ***
95 REM" --- [204]INES 40000-40010 FOR COLOURS ---
96 [143]"
100 S=54272:FOR A=S TO S+24:POKE A,0:NEXT:V=53248:POKE V+21,0
110 DIM WL$(40),WL%(40),LF%(10),HF%(10),DO$(20)
120 FOR A=1 TO 20:WL$(A)=CHR$(64+A):WL%(A)=A:NEXT
130 FOR A=21 TO 40:WL$(A)=CHR$(172+A):WL%(A)=44+A:NEXT
140 FOR A=0 TO 10:READ PC%(A),PC$(A):NEXT
150 POKE 53280,6:POKE 53281,15:PRINTCHR$(8)"[147]"
160 OPEN 2,8,2,"GE.ENTERPRISE.C,S,R"
170 FOR N=0 TO 62:INPUT#2,Q:POKE704+N,Q:NEXT
180 FOR N=0 TO 191:INPUT#2,Q:POKE832+N,Q:NEXT
190 CLOSE2
200 FOR A=0 TO 10:READ LF%(A),HF%(A):NEXT
210 DO$(0)="":FOR A=1 TO 20:DO$(A)=DO$(A-1)+"":NEXT
220 DEFFNDS(A)=SQR((WX%(P)-WX%(A))^2+(WY%(P)-WY%(A))^2)
230 D1$=PC$(0)+""
240 D2$=D1$+"":D3$=D2$+""
250 PN$(0)="[205]E !"
990 GOTO 20000
1000 REM $$$ $$$
1001 REM $$$ SOUNDS $$$
1002 REM $$$ $$$
1100 REM *** ***
1101 REM *** ATTACKER'S FIRE ***
1102 REM *** ***
1110 POKE S+5, 9:POKE S+6,20 :POKE S+24,15:POKE S+1,3 :POKE S,200
1120 POKE S+4,33:FOR TM=1 TO 100:NEXT:POKE S+4,0
1130 RETURN
1200 REM *** ***
1201 REM *** DEFENDER'S FIRE ***
1202 REM *** ***
1210 POKE S+5, 9:POKE S+6,20 :POKE S+24,10:POKE S+1,10:POKE S,200
1215 POKE S+2,16:POKE S+3,4
1220 POKE S+4,33:FOR TM=1 TO 100:NEXT:POKE S+4,0
1230 RETURN
1300 REM *** ***
1301 REM *** EXPLOSION OF HIT ***
1302 REM *** ***
1310 POKE S+5,9:POKE S+6,0:POKE S+24,10:POKE S+1,40:POKE S,200
1320 POKE S+4,129:FOR TM=1 TO 100:NEXT:POKE S+4,0
1330 RETURN
1600 REM *** ***
1601 REM *** INPUT MISTAKE ***
1602 REM *** ***
1610 POKE S+5,41:POKE S+6,249:POKE S+24,10:POKE S+1,15:POKE S,200
1615 FOR NT=1 TO 2
1620 FOR LP=1 TO 40 STEP 2:POKE S+4,33:POKES+4,32
1625 IF LP<21 THEN POKE S+1,15+LP:GOTO 1627
1626 POKE S+1,55-LP
1627 NEXT:POKE S+1,20:NEXT:POKES+4,0
1630 RETURN
1700 REM *** ***
1701 REM *** BATTLE STATIONS ***
1702 REM *** ***
1710 POKE S+5,41:POKE S+6,249:POKE S+24,12:POKE S+1,20:POKE S,200
1715 FOR NT=1 TO 4
1720 FOR LP=1 TO 40:POKE S+4,33
1725 POKE S+1,20+LP
1730 NEXT:POKE S+1,20:NEXT:POKE S+4,0
1740 RETURN
1800 REM *** ***
1801 REM *** TELETYPE (1 PING) ***
1802 REM *** ***
1810 POKE S+5,21:POKE S+6,0:POKE S+24,15:POKE S+1,7 :POKE S,50
1811 POKE S+12,21:POKE S+13,0:POKE S+8,100:POKE S+7,50
1815 POKE S+2,0:POKE S+3,15
1820 POKE S+4,65:POKE S+11,129:FOR TM=1 TO 50:NEXT:POKE S+4,0:POKE S+11,0:RETURN
2000 REM *** ***
2001 REM *** WORLD CHARACTER INPUT ***
2002 REM *** ***
2010 WAIT 198,1:GET IN$
2020 IF IN$="?" OR IN$=CHR$(13) THEN RETURN
2030 IF ASC(IN$)>64 AND ASC(IN$)<85 THEN U=ASC(IN$)-64:RETURN
2040 IF ASC(IN$)>192 AND ASC(IN$)<213 THEN U=ASC(IN$)-172:RETURN
2050 U=-1:RETURN
2100 REM *** ***
2101 REM *** NUMERICAL INPUT ***
2102 REM *** ***
2110 U=0
2120 GET IN$:IF IN$=""THEN 2120
2130 IF IN$="?" OR IN$=CHR$(13) THEN RETURN
2140 IF ASC(IN$)>47 AND ASC(IN$)<58 THEN U=10*U+ASC(IN$)-48:GOTO 2120
2160 U=-1:RETURN
3000 REM *** ***
3001 REM *** PLAYER'S INPUT ***
3002 REM *** ***
3030 W=1
3040 IF WC%(W)=P THEN 3100
3050 W=W+1:IF W<=WN THEN 3040
3060 PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)D2$"CONTROLS NO WORLDS"
3070 GOSUB 1600:FOR TM=1 TO 1000:NEXT:GOSUB 30950:RETURN
3100 PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)PC$(0)":"D2$"[207]RIGIN OF FLEET ?"
3110 GOSUB 2000
3120 IF IN$="?" THEN GOSUB 9000:GOTO 3000
3130 IF IN$=CHR$(13) THEN GOSUB 30950:RETURN
3135 IF U<0 THEN 3215
3140 IF WC%(U)=P THEN 3180
3160 PRINTD3$"[212]HAT'S NOT YOURS!":GOSUB 1600:GOSUB 30950:GOTO 3100
3180 WR=U:PRINTD2$"[196]ESTINATION ? "
3190 GOSUB 2000
3200 IF IN$="?" THEN GOSUB 9000:GOTO 3000
3210 IF IN$=CHR$(13) THEN GOSUB 30950:GOTO 3100
3215 IF U<0 THEN PRINTD3$"[201]NVALID [193]NSWER!":GOSUB 1600:GOSUB 30950:GOTO 3100
3220 WD=U:PRINTD2$"# OF SHIPS ? "
3230 GOSUB 2100
3240 IF IN$="?" THEN GOSUB 9000:GOTO 3000
3250 IF U<0 THEN 3215
3260 IF U=0 THEN GOSUB 30950:GOTO 3100
3265 IF U>WS%(WR) THEN PRINTD3$"[206]OT ENOUGH THERE!":GOSUB 1600:GOSUB 30950:GOTO 3100
3270 GOSUB 30950:FM=U:GOSUB 4000
3280 IF F<=100 THEN 3100
3999 RETURN
4000 REM *** ***
4001 REM *** TRANSFER SHIPS FROM ***
4002 REM *** WORLD TO FLEET ***
4003 REM *** ***
4010 F=1
4020 IF FC%(F)<>0 THEN 4050
4030 WS%(WR)=WS%(WR)-FM:FC%(F)=P:FD%(F)=WD:FS%(F)=FM
4040 Z=P:P=WR:FT%(F)=T+(FNDS(WD)+.99)/3:P=Z:RETURN
4050 F=F+1:IF F<=100 THEN 4020
4060 PRINTD1$"[215]ORKER'S STRIKE"D2$"HALTS ALL FLEET"D3$"LAUNCHES !":GOSUB 1600
4070 GOSUB 30950:P%(0)=PN:RETURN
5000 REM *** ***
5001 REM *** ARRIVAL OF FLEET ***
5002 REM *** ***
5010 W=FD%(F):DE=WS%(W):AK=FS%(F)
5012 PS=983+40*WY%(W)+WX%(W)
5014 FOR I=1 TO 10
5016 POKE PS,PEEK(PS)+128
5018 POKE PS,PEEK(PS)-128
5019 NEXT
5020 IF FC%(F)=WC%(W) THEN 5400
5100 REM *** ***
5101 REM *** ATTACK ***
5102 REM *** ***
5110 PRINTD1$;:CC$="[193]TTACK ON WORLD "+WL$(W)+"!":GOSUB 5900:GOSUB 1700
5120 PRINTD2$;:CC$="[196]EFENDER: ":GOSUB 5900:PRINTPC$(WC%(W));:CC$=PN$(WC%(W)):GOSUB 5900
5130 PRINTD3$;:CC$="[193]TTACKER: ":GOSUB 5900:PRINTPC$(FC%(F));:CC$=PN$(FC%(F)):GOSUB 5900
5140 PRINTD2$"S: ";:W2=W:GOSUB 30910:PRINT" "
5150 PRINTD3$"S: ";:W2=0:WS%(W2)=AK:GOSUB 30910:PRINT" "
5155 IF DE=0 THEN GOSUB 5700:GOTO 5300
5160 I=0:REM DEFENDER FIRES
5170 I=I+1:GOSUB 1200
5180 IF RND(0)>G1*AK/(AK+DE)+G2 THEN 5200
5190 GOSUB 1300:AK=AK-1:PRINTD3$"";:W2=0:WS%(0)=AK:GOSUB 30910
5200 IF AK=0 THEN GOSUB 5800:GOTO 5300
5210 IF I<DE THEN 5170
5220 I=0:REM ATTACKER FIRES
5230 I=I+1:GOSUB 1100
5240 IF RND(0)>G1*DE/(AK+DE)+G2 THEN 5260
5250 GOSUB 1300:DE=DE-1:PRINTD2$"";:W2=0:WS%(0)=DE:GOSUB 30910
5260 IF DE=0 THEN GOSUB 5600:GOTO 5300
5270 IF I<AK THEN 5230
5280 GOTO 5160
5300 FC%(F)=0:GOSUB 30950:RETURN
5400 REM *** ***
5401 REM *** REINFORCEMENTS ***
5402 REM *** ***
5410 PRINTD1$;:CC$="[215]ORLD "+WL$(W)+":":GOSUB 5900
5420 CC$=MID$(STR$(AK),2)+" REINFORCEMENT":IF AK>1 THEN CC$=CC$+"S"
5425 PRINTD2$;:GOSUB 5900
5430 CC$="HAVE ARRIVED":IF AK=1 THEN CC$="HAS ARRIVED"
5435 PRINTD3$;:GOSUB 5900
5440 WS%(W)=DE+AK:W2=W:PRINTDO$(W-20*INT(W/21))SPC(25+10*INT(W/21));:GOSUB 30910
5450 GOTO 5300
5600 REM *** ***
5601 REM *** OUTCOME MESSAGES ***
5602 REM *** ***
5610 GOSUB 30950
5620 PRINTD1$;:CC$="[212]HE ATTACKERS WON!":GOSUB 5900
5630 WC%(W)=FC%(F):WS%(W)=AK:POKE 55255+40*WY%(W)+WX%(W),PC%(WC%(W))
5640 PRINTDO$(W-20*INT(W/21))SPC(21+10*INT(W/21))PC$(WC%(W))WL$(W)PC$(0);
5650 W2=W:GOSUB 30900:RETURN
5700 GOSUB 30950
5710 PRINTD1$;:CC$="[212]HE ATTACKERS WON":GOSUB 5900:PRINTD2$;
5720 CC$="WITHOUT A FIGHT !":GOSUB 5900:GOTO 5630
5800 GOSUB 30950
5810 PRINTD1$;:CC$="[212]HE DEFENDERS":GOSUB 5900:PRINTD2$;:CC$="SURVIVED THE":GOSUB 5900
5820 PRINTD3$;:CC$="ATTACK!":GOSUB 5900:WS%(W)=DE:IF WC%(W)<>0 THEN GOTO 5640
5830 RETURN
5900 REM *** ***
5901 REM *** TAP OUT MESSAGE ***
5902 REM *** ***
5910 FOR LP=1 TO LEN(CC$)
5915 PRINTMID$(CC$,LP,1);:GOSUB 1800
5920 NEXT:RETURN
6000 REM *** ***
6001 REM *** BUILD SHIPS ***
6002 REM *** ***
6010 FOR W2=1 TO WN
6020 IF AB=0 AND WC%(W2)=0 THEN 6100
6030 WS%(W2)=WS%(W2)+WI%(W2)
6040 IFWC%(W2)>0THENPRINTDO$(W2-20*INT(W2/21))SPC(25+10*INT(W2/21))PC$(0);:GOSUB30910
6100 NEXT W2:RETURN
7000 REM *** ***
7001 REM *** MOVE FLEETS ***
7002 REM *** ***
7010 FOR F=1 TO 100
7020 IF FC%(F)=0 THEN 7040
7030 IF FT%(F)<T THEN GOSUB 5000
7040 NEXT F:RETURN
9000 REM *** ***
9001 REM *** HELP & UTILITY OPTIONS ***
9002 REM *** ***
9010 PRINTPC$(3)"[147] [200]ELP / [213]TILITY OPTIONS"
9020 PRINT" [162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162]"
9030 PRINTPC$(1)" C[157]E[157]G[157]Q[157]R"
9040 PRINTPC$(0)TAB(6)"- [195]HANGE THE # OF TURNS"
9050 PRINTTAB(6)"- [197]ND THE GAME (FOR EVERYONE)"
9060 PRINTTAB(6)"- [199]O BACK TO PLAYING THE GAME"
9070 PRINTTAB(6)"- [209]UIT THE GAME (1 PERSON)"
9080 PRINTTAB(6)"- [210]EVIEW THE INSTRUCTIONS"
9090 PRINTPC$(3)" [215]HICH OPTION DO YOU WANT ?"
9095 WAIT 198,1:GET IN$
9100 IF IN$="E" THEN GOSUB 10000:END
9110 IF IN$="R" THEN GOSUB 27000:GOTO 9000
9120 IF IN$="Q" THEN GOSUB 9200:RETURN
9130 IF IN$="G" THEN GOSUB 30000:RETURN
9140 IF IN$="C" THEN GOSUB 9300:GOTO 9000
9150 GOSUB 1600:GOTO 9000
9200 FOR F=1 TO 100:IF FC%(F)=P THEN FC%(F)=0
9210 NEXT
9220 FOR W=1 TO WN:IF WC%(W)=P THEN WC%(W)=0
9230 NEXT:RETURN
9300 PRINTPC$(0)"[147][201]T IS NOW YEAR"T
9310 PRINT"[212]HERE WERE TO HAVE BEEN"TN" YEARS IN":PRINT"TOTAL."
9320 PRINTPC$(3)"[200]OW MANY YEARS DO YOU WANT NOW"
9330 PRINT"("MID$(STR$(T+1),2)"-100) 99[157][157][157][157]";:INPUT TT
9340 IF TT<T+1 OR TT>100 THEN GOSUB 1600:GOTO 9300
9350 TN=TT:RETURN
9999 RETURN
10000 REM *** ***
10001 REM *** END OF GAME ***
10002 REM *** ***
10010 PRINTPC$(3)"[147] [198]INAL STATISTICS :"
10020 PRINT" [162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162]"
10025 PRINTPC$(0)" [193]DMIRAL # OF WORLDS # OF SHIPS"
10026 PRINT"[162][162][162][162][162][162][162][162][162] [162][162][162][162][162][162][162][162][162][162][162] [162][162][162][162][162][162][162][162][162][162]"
10030 N=0:N2=0:FOR P=1 TO PN:U=0:S=0
10040 FOR W=1 TO WN:IF WC%(W)=P THEN U=U+1:S=S+WS%(W)
10050 NEXT W
10060 FOR F=1 TO 100:IF FC%(F)=P THEN S=S+FS%(F)
10070 NEXT F
10080 PRINTPC$(P);PN$(P);TAB(16);PC$(0);U;TAB(27);S
10090 IF U>N THEN N=U:N2=0
10100 IF U=N THEN N2=N2+1
10110 NEXT P
10120 IF PN=1 THEN 10400
10130 N3=0:PRINT"";:IF N2>1 THEN PRINTPC$(3)"[212]HERE IS A"N2"-WAY TIE!"
10140 PRINTPC$(0)"[195]ONGRATULATIONS TO [193]DMIRAL";:IF N2>1 THEN PRINT"S";
10150 FOR P=1 TO PN:U=0
10160 FOR W=1 TO WN:IF WC%(W)=P THEN U=U+1
10170 NEXTW
10180 IFU=NTHENPRINTTAB(28)PC$(P)PN$(P);:N3=N3+1:IFN3>1 THEN PRINTTAB(24)PC$(0)"AND";
10190 IF U=N THEN PRINT
10195 NEXT P
10200 PRINTPC$(3)"[193]NOTHER GAME (Y/N) ?"
10210 WAIT 198,1:GET IN$
10220 IF IN$="Y" THEN PRINT"[147]":RUN
10230 IF IN$<>"N" THEN GOSUB 1600:GOTO 10210
10240 PRINT"[147][199]OOD-BYE !"CHR$(9):RETURN
10400 IF U=WN THEN PRINT"[195]ONGRATULATIONS! [217]OU HAVE SUCCEEDED!":GOTO 10200
10410 PRINT"[201]'M GLAD YOU LOST...YOU DESERVED IT!":GOTO 10200
10999 RETURN
20000 REM *** ***
20001 REM *** MAIN PROGRAM ***
20002 REM *** ***
20010 GOSUB 21000:GOSUB 22000
20020 PRINTCHR$(14)PC$(3)"[147][196]O YOU WANT TO SEE THE RULES (Y/N) ?"
20030 WAIT 198,1:GET IN$
20040 IF IN$="Y" THEN 20120
20050 IF IN$="N" THEN 20130
20060 GOSUB 1600:GOTO 20030
20120 GOSUB 27000
20130 GOSUB 28000
20140 GOSUB 29000
20150 GOSUB 31000:GOSUB 33000:GOSUB 34000
20180 T=0:GOSUB 30000
20190 PRINTD1$"[215]OULD YOU LIKE A"
20200 PRINTD2$"DIFFERENT MAP ?"
20210 WAIT 198,1:GET IN$
20220 IF IN$="Y" THEN GOSUB 30950:PRINTD1$"[208]LEASE WAIT...":GOTO 20140
20230 IF IN$<>"N" THEN GOSUB 1600:GOTO 20210
20240 GOSUB 30950
20250 REM *** ***
20251 REM *** BEGINNING OF GAME ***
20252 REM *** ***
20260 T=0
20265 FOR P=0 TO PN:P%(P)=0:NEXT
20270 P=INT(PN*RND(0)+1):IF P%(P)=1 THEN 20270
20275 P%(P)=1:P%(0)=P%(0)+1
20280 GOSUB 3000
20290 IF P%(0)<PN THEN 20270
20300 T=T+1:PRINTD3$""T"":GOSUB 6000
20310 GOSUB 7000
20320 FOR W=1 TO WN:W2%(W)=WS%(W):NEXT
20340 IF T<TN THEN 20265
20350 GOSUB 10000
20360 END
21000 REM *** ***
21001 REM *** INTRODUCTION ***
21002 REM *** ***
21010 PRINTCHR$(142)PC$(0)"[147] WELCOME TO THE GAME OF"
21020 PRINTPC$(9)" [169] [223][169] [223] [169] [223][169] [223] [169] [223]"
21030 PRINT" [162] [162] [162]"
21040 PRINT" "
21050 PRINT" [162] [146][162] [146][162]"
21060 PRINT" [223] [146][169] [146] [223] [146][169] [146][223] [146][169]"
21070 PRINT" [223][146] [169] [223] [223] "
21080 PRINT" [146][223] [146][169] "
21090 PRINT" [146][169] [146][169] "
21100 PRINT" [146][223][223] "
21110 PRINT" [146][223][223] "
21111 PRINTPC$(3)" BY PAUL KELLAM"
21114 POKE S+12,96:POKE S+13,0
21115 POKE S+5,9:POKE S+6,0:POKE S+24,15:GOSUB 39000
21120 V=53248:POKEV+16,0:POKEV+23,0:POKEV+29,0:POKEV+39,11:POKEV+40,11:POKEV+41,12:POKEV+42,12
21130 POKEV+21,15:POKE2040,11:POKE2041,13:POKE2042,14:POKE2043,15
21140 X=-1:X2=23:FOR X1=0 TO 320:X=X+1:X2=X2+1
21150 Y=150+70*SIN((null)*X1/115)
21160 POKEV,X:POKEV+4,X:POKEV+2,X2:POKEV+6,X2
21170 POKEV+1,Y:POKEV+5,Y:POKEV+3,Y:POKEV+7,Y
21174 IF X2=255 THEN X2=-1:POKEV+16,10
21175 IF X1=255 THEN POKE V+16,15:X=-1
21180 IF TI>T THEN GOSUB 39000
21190 NEXT:POKEV+21,0:POKE S+4,0
21200 RETURN
22000 REM *** ***
22001 REM *** INITIALIZE VARIABLES ***
22002 REM *** ***
22010 P=1:G1=.8:G2=.03
23000 REM *** ***
23001 REM *** DIMENSION ARRAYS ***
23002 REM *** ***
23010 DIM WS%(40),WC%(40),WX%(40),WY%(40),WI%(40),W2%(40)
23020 DIM FS%(100),FD%(100),FC%(100),FT%(100),P%(20)
23030 RETURN
27000 REM *** ***
27001 REM *** INSTRUCTIONS ***
27002 REM *** ***
27010 PRINT"[147]"SPC(14)PC$(1)"[201]NSTRUCTIONS"
27020 PRINTSPC(14)"[192][192][192][192][192][192][192][192][192][192][192][192]"
27030 PRINTPC$(3)"[212]HE OBJECT OF THIS GAME IS TO CONTROL"
27040 PRINT"MORE PLANETS BY THE END OF THE GAME THAN"
27050 PRINT"ANY OF YOUR OPPONENTS. [212]O DO THIS, YOU"
27060 PRINT"SEND OUT FLEETS OF SHIPS TO OTHER STARS"
27070 PRINT"(EACH OF WHICH HAS 1 HABITABLE, AND"
27080 PRINT"PERHAPS OCCUPIED, PLANET). [217]OUR HOME"
27090 PRINT"WORLD HAS AN INDUSTRIAL CAPACITY OF 10"
27100 PRINT"SHIPS PER YEAR. [212]HE WORLDS YOU ATTACK"
27110 PRINT"MAY HAVE INDUSTRIAL CAPACITY AND SHIPS"
27120 PRINT"ON DEFENSE."
27130 PRINTPC$(0)" [208]RESS ANY KEY TO CONTINUE."
27140 WAIT 198,1:POKE 198,0
27150 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
27160 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
27170 PRINTPC$(3)"[207]RDERS FOR LAUNCHING FLEETS REQUIRE 3"
27180 PRINT"PIECES OF DATA :"
27190 PRINTPC$(0)" 1. [208]LANET OF ORIGIN (BY CODE)"
27200 PRINT" 2. [196]ESTINATION"
27210 PRINT" 3. # OF SHIPS IN FLEET"
27220 PRINTPC$(3)"[217]OUR FLEET ORDERS WILL BE INVISIBLE AS"
27230 PRINT"YOU ENTER THEM TO PROTECT YOUR SECRECY."
27240 PRINT"[208]RESS "PC$(1)"[210]ETURN"PC$(3)" WHEN YOU ARE FINISHED"
27250 PRINT"ENTERING ORDERS. [198]OR HELP, TYPE A '?'."
27260 PRINTPC$(0)" [208]RESS ANY KEY TO CONTINUE."
27270 WAIT 198,1:POKE 198,0
27280 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
27290 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
27300 PRINTPC$(3)"[198]LEETS TRAVEL AT A SPEED OF 3 PER YEAR"
27310 PRINT"(1 TURN=1 YEAR) AFTER ONE ACCELERATION"
27320 PRINT"YEAR IN WHICH THEY MOVE ONLY 2."
27330 PRINT"[211]EPARATE FLEETS ATTACK SEPARATELY, EVEN"
27340 PRINT"IF THEY ARRIVE AT THE SAME WORLD IN THE"
27350 PRINT"SAME YEAR. [207]NCE A FLEET HAS BEEN"
27360 PRINT"LAUNCHED, ITS ORDERS CANNOT BE CHANGED."
27370 PRINT"[208]LAYERS WILL MOVE IN A RANDOM ORDER EACH"
27380 PRINT"TURN."
27390 PRINTPC$(0)" [208]RESS ANY KEY TO CONTINUE."
27400 WAIT 198,1:POKE 198,0
27410 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
27420 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
27430 PRINTPC$(3)"[212]O PLAY SOLITAIRE, MAKE THE NUMBER OF"
27440 PRINT"YEARS EQUAL TO THE NUMBER OF WORLDS."
27450 PRINT"[212]O WIN, YOU MUST CONTROL ALL PLANETS BY"
27460 PRINT"THE END OF THE GAME."
27470 PRINT" "PC$(2)"[199]OOD [204]UCK !"
27480 PRINTPC$(0)" [208]RESS ANY KEY TO CONTINUE."
27490 WAIT 198,1:POKE 198,0
27500 RETURN
28000 REM *** ***
28001 REM *** PLAYER INPUT (SETUP) ***
28002 REM *** ***
28010 PRINTPC$(3)CHR$(14):INPUT"[147][200]OW MANY PLAYERS (1-10) 2[157][157][157]";PN
28020 IF PN<1 OR PN>10 THEN GOSUB 1600:GOTO 28010
28030 PN=INT(PN)
28040 FOR A=1 TO PN
28050 PRINT"[208]LAYER #";A;"IS [215]HO[157][157][157][157][157]";:INPUT PN$(A)
28060 IF LEN(PN$(A))>9 THEN PN$(A)=LEFT$(PN$(A),9)
28070 NEXT A
28080 MN=5:IF PN>5 THEN MN=PN
28090 PRINT"[147][200]OW MANY WORLDS ("MN"-40) 10[157][157][157][157]";:INPUT WN
28100 IF WN<MN OR WN>40 THEN GOSUB 1600:GOTO 28090
28110 WN=INT(WN)
28120 PRINT"[147][200]OW MANY YEARS IN THE GAME (1-100) 1[157][157][157]";:INPUT TN
28130 IF TN<1 OR TN>100 THEN GOSUB 1600:GOTO 28120
28140 PRINT"[196]O YOU WANT THE NEUTRAL WORLDS TO BUILD"
28150 PRINT"DEFENSIVE SHIPS (Y/N) ?"
28160 WAIT 198,1:GET IN$:IF IN$<>"Y" AND IN$<>"N" THEN GOSUB 1600:GOTO 28160
28170 AB=0:IF IN$="Y" THEN AB=1
28180 PRINT"[208]LEASE WAIT..."
28190 RETURN
29000 REM *** ***
29001 REM *** GENERATE STARS ***
29002 REM *** ***
29010 WX%(1)=1+INT(RND(0)*20)
29020 WY%(1)=1+INT(RND(0)*20)
29030 FOR W=2 TO WN
29040 WX%(W)=1+INT(RND(0)*20)
29050 WY%(W)=1+INT(RND(0)*20)
29060 I=1
29070 IF WX%(W)=WX%(I) AND WY%(W)=WY%(I) THEN 29040
29080 I=I+1:IF I<W THEN 29070
29090 NEXT
29100 RETURN
30000 REM *** ***
30001 REM *** SCREEN DISPLAY ***
30002 REM *** ***
30010 PRINTCHR$(14);PC$(0);"[147][176][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][174][176][192][192][192][192][192][192][192][192][178][178][192][192][192][192][192][192][192][192][174]";
30020 FORA=1TO18:PRINT"[171][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][179][221] [221][221] [221]";:NEXT
30030 PRINT"[173][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][189][221] [221][221] [221]";
30040 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174][221] [221][221] [221]";
30045 PRINT"[221] [221][221] [221][221] [221]";
30050 PRINT"[221] [221][173][192][192][192][192][192][192][192][192][177][177][192][192][192][192][192][192][192][192][189]";
30060 PRINT"[221] [221] [217]EAR :"T
30070 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]";
30075 PRINTSPC(21)"[215] [208]R [211]HP[215] [208]R [211]HP"
30080 FOR W2=1 TO WN
30090 PS=40*WY%(W2)+WX%(W2)
30100 POKE 983+PS,WL%(W2):POKE 55255+PS,PC%(WC%(W2))
30110 PRINTDO$(W2-20*INT(W2/21))SPC(21+10*INT(W2/21))PC$(WC%(W2))WL$(W2)"[151]";
30120 IF WC%(W2)<>0 THEN GOSUB 30900
30130 NEXT:RETURN
30900 S$=MID$(STR$(WI%(W2)),2):S$=LEFT$(" ",3-LEN(S$))+S$:PRINTPC$(0);S$;
30910 S$=MID$(STR$(WS%(W2)),2):S$=LEFT$(" ",4-LEN(S$))+S$:PRINTS$;:RETURN
30950 REM *** ***
30951 REM *** CLEAR BOX ***
30952 REM *** ***
30960 PRINTD1$" [221]"D2$" [221]"D3$" [221]"
30970 RETURN
31000 REM *** ***
31001 REM *** WORLD INDUSTRY SETUP ***
31002 REM *** ***
31010 FOR P=1 TO PN:WI%(P)=10:NEXT
31020 IF PN=WN THEN RETURN
31030 FOR W=PN+1 TO WN
31040 IF RND(0)<.25 THEN 31070
31050 WI%(W)=WI%(W)+1
31060 IF RND(0)<.67 THEN 31050
31070 NEXT W
31080 RETURN
33000 REM *** ***
33001 REM *** WORLD CONTROL SETUP ***
33002 REM *** ***
33010 FOR P=1 TO PN:WC%(P)=P:NEXT:RETURN
34000 REM *** ***
34001 REM *** WORLD SHIP SETUP ***
34002 REM *** ***
34005 FC=2+RND(0)
34010 FOR P=1 TO PN
34020 WS%(P)=12*WN-15*PN
34030 FOR I=1 TO PN
34040 WS%(P)=WS%(P)+300/(FNDS(I)+6)
34050 NEXT I
34070 FOR W=PN+1 TO WN
34080 WS%(P)=WS%(P)-100/(FNDS(W)+3)
34090 NEXT W
34100 IF WS%(P)<50 THEN WS%(P)=50
34110 W2%(P)=WS%(P)
34120 WS%(P)=FC*WS%(P):NEXT P
34200 FOR W=PN+1 TO WN
34210 WS%(W)=WS%(W)+(WI%(W)+2.2)*RND(0)
34220 IF RND(0)<.67 THEN 34210
34230 W2%(W)=WS%(W)
34240 NEXT W
34250 RETURN
38999 END
39000 REM *** ***
39001 REM *** NEXT NOTE IN TUNE ***
39002 REM *** ***
39010 POKES+4,16:POKES+11,32:READNT,DR
39020 T=TI+12*DR:POKES,HF%(NT):POKES+1,LF%(NT)
39025 POKES+7,HF%(NT):POKES+8,LF%(NT):POKES+11,33:POKE S+4,17
39030 RETURN
39997 REM *** ***
39998 REM *** COLOURS (#,CHAR) ***
39999 REM *** ***
40000 DATA 12,"[152]",6,"",2,"",11,"[151]",5,"",10,"[150]",4,"[156]",14,"[154]",9,"[149]",1,""
40010 DATA 16,"[144]"
40020 REM *** ***
40021 REM *** NOTE VALUES ***
40022 REM *** ***
40030 DATA 0,0,4,251,5,152,6,71,7,12,7,119,8,97,9,104,9,247,10,143,11,48
40040 REM *** ***
40041 REM *** RULE BRITANNIA! ***
40042 REM *** ***
40045 DATA 7,2,0,1,7,1,8,1,8,1,0,1,7,1,8,1.5,7,.5,6,1,5,1,4,3,0,1
40046 DATA 10,2,8,2,7,.5,5,.5,8,.5,6,.5,10,1,8,1,7,2,6,2,5,3,0,4
40050 DATA 2,1,5,2,5,2,5,.5,6,.5,7,.5,8,.5,10,1,5,1,6,3,7,.5,8,.5,7,2,0,1,2,1
40060 DATA 5,.5,6,.5,5,.5,6,.5,7,.5,8,.5,7,.5,8,.5,10,1,6,1,7,1,6,1
40061 DATA 5,1,6,.5,7,.5,6,1,5,1,4,3,2,1
40070 DATA 4,1,2,1,6,1,4,1,10,1,9,.5,7,.5,6,1,5,1,4,2,3,1,2,1,2,2,0,2
40080 DATA 5,2,5,1.5,2,.5,3,1,1,1,0,1,5,1,8,1,7,1,6,1,5,1,4,2,0,1,6,1
40090 DATA 10,2,8,2,7,.5,5,.5,8,.5,6,.5,10,1,8,1,7,2,6,2,5,2,0,2
41000 DATA 7,2,0,1,7,1,8,1,8,1,0,1,7,1,8,1.5,7,.5,6,1,5,1,4,3,0,1
41010 DATA 10,2,8,2,7,.5,5,.5,8,.5,6,.5,10,1,8,1,7,2,6,2,5,3,0,100